From cb38a78b86d18478a28348820454529f337e6829 Mon Sep 17 00:00:00 2001 From: "robertlipe@gmail.com" Date: Sun, 27 Jan 2013 22:24:28 +0000 Subject: [PATCH] Guilhem Bonnefille contributes support for the Google Direction API. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4268 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/AUTHORS | 1 + gpsbabel/Makefile.in | 2 +- gpsbabel/googledir.cc | 208 + gpsbabel/reference/googdir.sh | 5 + gpsbabel/reference/google-direction.gpx | 7074 +++++++++++++++++++++++ gpsbabel/reference/google-direction.xml | 616 ++ gpsbabel/testo.d/googledir.test | 6 + gpsbabel/vecs.cc | 7 + gpsbabel/xmldoc/formats/googledir.xml | 20 + 9 files changed, 7938 insertions(+), 1 deletion(-) create mode 100644 gpsbabel/googledir.cc create mode 100755 gpsbabel/reference/googdir.sh create mode 100644 gpsbabel/reference/google-direction.gpx create mode 100644 gpsbabel/reference/google-direction.xml create mode 100644 gpsbabel/testo.d/googledir.test create mode 100644 gpsbabel/xmldoc/formats/googledir.xml diff --git a/gpsbabel/AUTHORS b/gpsbabel/AUTHORS index b89d2dca0..3e52e7d7e 100644 --- a/gpsbabel/AUTHORS +++ b/gpsbabel/AUTHORS @@ -36,6 +36,7 @@ Other contributors and helpers: * Fredie Kern * Gary Paulson * Gerhard Olsson +* Guilhem Bonnefille * Gunar Megger * Gustavo Niemeyer * Hans Klausmann diff --git a/gpsbabel/Makefile.in b/gpsbabel/Makefile.in index ee9ed135a..29a36eb3a 100644 --- a/gpsbabel/Makefile.in +++ b/gpsbabel/Makefile.in @@ -79,7 +79,7 @@ ALL_FMTS=$(MINIMAL_FMTS) gtm.o gpsutil.o cetus.o copilot.o \ pocketfms_bc.o pocketfms_fp.o pocketfms_wp.o naviguide.o enigma.o \ vpl.o teletype.o jogmap.o bushnell.o bushnell_trl.o wintec_tes.o \ subrip.o garmin_xt.o garmin_fit.o lowranceusr4.o \ - mtk_locus.o + mtk_locus.o googledir.o FMTS=@FMTS@ diff --git a/gpsbabel/googledir.cc b/gpsbabel/googledir.cc new file mode 100644 index 000000000..e4539491f --- /dev/null +++ b/gpsbabel/googledir.cc @@ -0,0 +1,208 @@ +/* + Copyright (C) 2002 Robert Lipe, robertlipe@usa.net + Copyright (C) 2012 Guilhem Bonnefille, guilhem.bonnefille@gmail.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA + + */ +/* + * Parse the output of the following command: + * curl "http://maps.googleapis.com/maps/api/directions/xml?origin='Albi,%20france'&destination='toulouse,%20france'&sensor=false" > google-direction.xml + * + * For more information, check: + * https://developers.google.com/maps/documentation/directions/ + */ +#include "defs.h" +#include "xmlgeneric.h" + +static char* encoded_points = NULL; +static char* instructions = NULL; +static short_handle desc_handle; + +#define MYNAME "googledir" +#define MY_CBUF 4096 + +#if ! HAVE_LIBEXPAT +static void +google_rd_init(const char* fname) +{ + fatal(MYNAME ": This build excluded Google Maps support because expat was not installed.\n"); +} + +static void +google_read(void) +{ +} +#else + +static xg_callback goog_points, goog_poly_e; +static xg_callback goog_instr; + +static +xg_tag_mapping google_map[] = { + { goog_points, cb_cdata, "/DirectionsResponse/route/overview_polyline/points" }, + { goog_poly_e, cb_end, "/DirectionsResponse/route/overview_polyline" }, + { goog_points, cb_cdata, "/DirectionsResponse/route/leg/step/polyline/points" }, + { goog_poly_e, cb_end, "/DirectionsResponse/route/leg/step" }, + { goog_instr, cb_cdata, "/DirectionsResponse/route/leg/step/html_instructions" }, + { NULL, (xg_cb_type)0, NULL } +}; + +void +goog_points(const char* args, const char** unused) +{ + if (args) { + if (encoded_points) { + encoded_points = xstrappend(encoded_points, args); + } else { + encoded_points = xstrdup(args); + } + } +} + +void +goog_instr(const char* args, const char** unused) +{ + if (args) { + if (instructions) { + instructions = xstrappend(instructions, args); + } else { + instructions = xstrdup(args); + } + } +} + +static int goog_step = 0; + +static long +decode_goog64(char** str) +{ + long result = 0; + unsigned char c = 0; + unsigned char shift = 0; + + if (!(**str)) { + return 0; + } + + do { + c = (unsigned char)(*(*str)++)-'?'; + result |= (c & 31)<rte_name = (char*) xstrdup("overview"); + routehead->rte_desc = (char*) xstrdup("Overview"); + } else { + goog_step++; + xasprintf(&routehead->rte_name, "step%03d", goog_step); + if (instructions == NULL) { + xasprintf(&routehead->rte_desc, "Step %d", goog_step); + } else { + utf_string utf; + utf.is_html = 1; + utf.utfstring = instructions; + routehead->rte_desc = strip_html(&utf); + xfree(instructions); + instructions = NULL; + } + } + route_add_head(routehead); + + while (str && *str) { + lat += decode_goog64(&str); + lon += decode_goog64(&str); + + { + waypoint* wpt_tmp = waypt_new(); + wpt_tmp->latitude = lat / 100000.0; + wpt_tmp->longitude = lon / 100000.0; + /* FIXME no need for name + xsaprintf(wpt_tmp->shortname, "\\%5.5x", serial++); + */ + route_add_wpt(routehead, wpt_tmp); + } + } + + if (encoded_points) { + xfree(encoded_points); + encoded_points = NULL; + } + if (instructions) { + xfree(instructions); + instructions = NULL; + } +} + +static void +google_rd_init(const char* fname) +{ + desc_handle = mkshort_new_handle(); + setshort_length(desc_handle, 12); + + xml_init(fname, google_map, "ISO-8859-1"); +} + +static void +google_read(void) +{ + xml_read(); + + if (encoded_points) { + xfree(encoded_points); + encoded_points = NULL; + } + if (instructions) { + xfree(instructions); + instructions = NULL; + } +} +#endif + +static void +google_rd_deinit(void) +{ + xml_deinit(); + mkshort_del_handle(&desc_handle); +} + +ff_vecs_t google_dir_vecs = { + ff_type_file, + { ff_cap_none, ff_cap_read, ff_cap_none}, + google_rd_init, + NULL, + google_rd_deinit, + NULL, + google_read, + NULL, + NULL, + NULL, + CET_CHARSET_UTF8, 1 /* CET-REVIEW */ +}; diff --git a/gpsbabel/reference/googdir.sh b/gpsbabel/reference/googdir.sh new file mode 100755 index 000000000..d9e5b7767 --- /dev/null +++ b/gpsbabel/reference/googdir.sh @@ -0,0 +1,5 @@ + +FROM="233 S. Upper Wacker Dr, Chicago, IL" +TO="1060 W. Addison St, Chicago, IL" +wget -O - "http://maps.googleapis.com/maps/api/directions/xml?origin=$FROM&destination=$TO&sensor=false" 2>/dev/null + diff --git a/gpsbabel/reference/google-direction.gpx b/gpsbabel/reference/google-direction.gpx new file mode 100644 index 000000000..fbe783fdf --- /dev/null +++ b/gpsbabel/reference/google-direction.gpx @@ -0,0 +1,7074 @@ + + + + + + step001 + Head south on Rue du Palais toward Rue de l'Ort en Salvy + + RPT001 + + + RPT002 + + + RPT003 + + + RPT004 + + + + step002 + Turn left onto Pl. du Palais + + RPT005 + + + RPT006 + + + + step003 + Turn right onto Rue du Sel + + RPT007 + + + RPT008 + + + RPT009 + + + RPT010 + + + RPT011 + + + RPT012 + + + + step004 + Slight right onto Pl. Lapèrouse + + RPT013 + + + RPT014 + + + RPT015 + + + RPT016 + + + RPT017 + + + RPT018 + + + RPT019 + + + + step005 + Slight left to stay on Pl. Lapèrouse + + RPT020 + + + RPT021 + + + RPT022 + + + RPT023 + + + RPT024 + + + RPT025 + + + RPT026 + + + RPT027 + + + RPT028 + + + RPT029 + + + RPT030 + + + RPT031 + + + RPT032 + + + RPT033 + + + RPT034 + + + RPT035 + + + RPT036 + + + RPT037 + + + RPT038 + + + RPT039 + + + RPT040 + + + RPT041 + + + + step006 + Continue onto Av. Général de Gaulle + + RPT042 + + + RPT043 + + + RPT044 + + + RPT045 + + + RPT046 + + + RPT047 + + + + step007 + At the roundabout, take the 1st exit onto Av. Maréchal Joffre + + RPT048 + + + RPT049 + + + RPT050 + + + RPT051 + + + RPT052 + + + RPT053 + + + RPT054 + + + RPT055 + + + RPT056 + + + + step008 + At the roundabout, take the 1st exit onto Bd Lacombe + + RPT057 + + + RPT058 + + + RPT059 + + + RPT060 + + + RPT061 + + + RPT062 + + + RPT063 + + + RPT064 + + + RPT065 + + + RPT066 + + + RPT067 + + + RPT068 + + + RPT069 + + + RPT070 + + + RPT071 + + + RPT072 + + + RPT073 + + + RPT074 + + + RPT075 + + + RPT076 + + + RPT077 + + + RPT078 + + + RPT079 + + + RPT080 + + + RPT081 + + + RPT082 + + + RPT083 + + + RPT084 + + + RPT085 + + + RPT086 + + + RPT087 + + + RPT088 + + + + step009 + Turn right onto Av. François Verdier/D988Continue to follow D988 + + RPT089 + + + RPT090 + + + RPT091 + + + RPT092 + + + RPT093 + + + RPT094 + + + RPT095 + + + RPT096 + + + RPT097 + + + RPT098 + + + RPT099 + + + RPT100 + + + RPT101 + + + RPT102 + + + RPT103 + + + RPT104 + + + RPT105 + + + RPT106 + + + RPT107 + + + RPT108 + + + RPT109 + + + RPT110 + + + RPT111 + + + RPT112 + + + RPT113 + + + RPT114 + + + RPT115 + + + RPT116 + + + RPT117 + + + RPT118 + + + + step010 + At the roundabout, take the 2nd exit onto the N88 ramp to Montauban/Toulouse/Gaillac + + RPT119 + + + RPT120 + + + RPT121 + + + RPT122 + + + RPT123 + + + RPT124 + + + RPT125 + + + RPT126 + + + RPT127 + + + RPT128 + + + RPT129 + + + RPT130 + + + RPT131 + + + RPT132 + + + RPT133 + + + RPT134 + + + RPT135 + + + RPT136 + + + RPT137 + + + RPT138 + + + RPT139 + + + RPT140 + + + RPT141 + + + RPT142 + + + RPT143 + + + RPT144 + + + + step011 + Merge onto N88 + + RPT145 + + + RPT146 + + + RPT147 + + + RPT148 + + + RPT149 + + + RPT150 + + + RPT151 + + + RPT152 + + + RPT153 + + + RPT154 + + + RPT155 + + + RPT156 + + + RPT157 + + + RPT158 + + + RPT159 + + + RPT160 + + + RPT161 + + + RPT162 + + + RPT163 + + + RPT164 + + + RPT165 + + + RPT166 + + + RPT167 + + + RPT168 + + + RPT169 + + + RPT170 + + + RPT171 + + + RPT172 + + + RPT173 + + + RPT174 + + + RPT175 + + + RPT176 + + + RPT177 + + + RPT178 + + + RPT179 + + + RPT180 + + + RPT181 + + + RPT182 + + + RPT183 + + + RPT184 + + + RPT185 + + + RPT186 + + + RPT187 + + + RPT188 + + + RPT189 + + + RPT190 + + + RPT191 + + + RPT192 + + + RPT193 + + + RPT194 + + + RPT195 + + + RPT196 + + + RPT197 + + + RPT198 + + + RPT199 + + + RPT200 + + + RPT201 + + + RPT202 + + + RPT203 + + + RPT204 + + + RPT205 + + + RPT206 + + + RPT207 + + + RPT208 + + + RPT209 + + + RPT210 + + + RPT211 + + + RPT212 + + + RPT213 + + + RPT214 + + + RPT215 + + + RPT216 + + + RPT217 + + + RPT218 + + + RPT219 + + + RPT220 + + + RPT221 + + + RPT222 + + + RPT223 + + + RPT224 + + + RPT225 + + + RPT226 + + + RPT227 + + + RPT228 + + + RPT229 + + + RPT230 + + + RPT231 + + + RPT232 + + + RPT233 + + + RPT234 + + + RPT235 + + + RPT236 + + + RPT237 + + + RPT238 + + + RPT239 + + + RPT240 + + + RPT241 + + + RPT242 + + + RPT243 + + + RPT244 + + + RPT245 + + + RPT246 + + + RPT247 + + + RPT248 + + + RPT249 + + + RPT250 + + + RPT251 + + + + step012 + Continue onto A68Partial toll road + + RPT252 + + + RPT253 + + + RPT254 + + + RPT255 + + + RPT256 + + + RPT257 + + + RPT258 + + + RPT259 + + + RPT260 + + + RPT261 + + + RPT262 + + + RPT263 + + + RPT264 + + + RPT265 + + + RPT266 + + + RPT267 + + + RPT268 + + + RPT269 + + + RPT270 + + + RPT271 + + + RPT272 + + + RPT273 + + + RPT274 + + + RPT275 + + + RPT276 + + + RPT277 + + + RPT278 + + + RPT279 + + + RPT280 + + + RPT281 + + + RPT282 + + + RPT283 + + + RPT284 + + + RPT285 + + + RPT286 + + + RPT287 + + + RPT288 + + + RPT289 + + + RPT290 + + + RPT291 + + + RPT292 + + + RPT293 + + + RPT294 + + + RPT295 + + + RPT296 + + + RPT297 + + + RPT298 + + + RPT299 + + + RPT300 + + + RPT301 + + + RPT302 + + + RPT303 + + + RPT304 + + + RPT305 + + + RPT306 + + + RPT307 + + + RPT308 + + + RPT309 + + + RPT310 + + + RPT311 + + + RPT312 + + + RPT313 + + + RPT314 + + + RPT315 + + + RPT316 + + + RPT317 + + + RPT318 + + + RPT319 + + + RPT320 + + + RPT321 + + + RPT322 + + + RPT323 + + + RPT324 + + + RPT325 + + + RPT326 + + + RPT327 + + + RPT328 + + + RPT329 + + + RPT330 + + + RPT331 + + + RPT332 + + + RPT333 + + + RPT334 + + + RPT335 + + + RPT336 + + + RPT337 + + + RPT338 + + + RPT339 + + + RPT340 + + + RPT341 + + + RPT342 + + + RPT343 + + + RPT344 + + + RPT345 + + + RPT346 + + + RPT347 + + + RPT348 + + + RPT349 + + + RPT350 + + + RPT351 + + + RPT352 + + + RPT353 + + + RPT354 + + + RPT355 + + + RPT356 + + + RPT357 + + + RPT358 + + + RPT359 + + + RPT360 + + + RPT361 + + + RPT362 + + + RPT363 + + + RPT364 + + + RPT365 + + + RPT366 + + + RPT367 + + + RPT368 + + + RPT369 + + + RPT370 + + + RPT371 + + + RPT372 + + + RPT373 + + + RPT374 + + + RPT375 + + + RPT376 + + + RPT377 + + + RPT378 + + + RPT379 + + + RPT380 + + + RPT381 + + + RPT382 + + + RPT383 + + + RPT384 + + + RPT385 + + + RPT386 + + + RPT387 + + + RPT388 + + + RPT389 + + + RPT390 + + + RPT391 + + + RPT392 + + + RPT393 + + + RPT394 + + + RPT395 + + + RPT396 + + + RPT397 + + + RPT398 + + + RPT399 + + + RPT400 + + + RPT401 + + + RPT402 + + + RPT403 + + + RPT404 + + + RPT405 + + + RPT406 + + + RPT407 + + + RPT408 + + + RPT409 + + + RPT410 + + + RPT411 + + + RPT412 + + + RPT413 + + + RPT414 + + + RPT415 + + + RPT416 + + + RPT417 + + + RPT418 + + + RPT419 + + + RPT420 + + + RPT421 + + + RPT422 + + + RPT423 + + + RPT424 + + + RPT425 + + + RPT426 + + + RPT427 + + + RPT428 + + + RPT429 + + + RPT430 + + + RPT431 + + + RPT432 + + + RPT433 + + + RPT434 + + + RPT435 + + + RPT436 + + + RPT437 + + + RPT438 + + + RPT439 + + + RPT440 + + + RPT441 + + + RPT442 + + + RPT443 + + + RPT444 + + + RPT445 + + + RPT446 + + + RPT447 + + + RPT448 + + + RPT449 + + + RPT450 + + + RPT451 + + + RPT452 + + + RPT453 + + + RPT454 + + + RPT455 + + + RPT456 + + + RPT457 + + + RPT458 + + + RPT459 + + + RPT460 + + + RPT461 + + + RPT462 + + + RPT463 + + + RPT464 + + + RPT465 + + + RPT466 + + + RPT467 + + + RPT468 + + + RPT469 + + + RPT470 + + + RPT471 + + + RPT472 + + + RPT473 + + + RPT474 + + + RPT475 + + + RPT476 + + + RPT477 + + + RPT478 + + + RPT479 + + + RPT480 + + + RPT481 + + + RPT482 + + + RPT483 + + + RPT484 + + + RPT485 + + + RPT486 + + + RPT487 + + + RPT488 + + + RPT489 + + + RPT490 + + + RPT491 + + + RPT492 + + + RPT493 + + + RPT494 + + + RPT495 + + + RPT496 + + + RPT497 + + + RPT498 + + + RPT499 + + + RPT500 + + + RPT501 + + + RPT502 + + + RPT503 + + + RPT504 + + + RPT505 + + + RPT506 + + + RPT507 + + + RPT508 + + + RPT509 + + + RPT510 + + + RPT511 + + + RPT512 + + + RPT513 + + + RPT514 + + + RPT515 + + + RPT516 + + + RPT517 + + + RPT518 + + + RPT519 + + + RPT520 + + + RPT521 + + + RPT522 + + + RPT523 + + + RPT524 + + + RPT525 + + + RPT526 + + + RPT527 + + + RPT528 + + + RPT529 + + + RPT530 + + + RPT531 + + + RPT532 + + + RPT533 + + + RPT534 + + + RPT535 + + + RPT536 + + + RPT537 + + + RPT538 + + + RPT539 + + + RPT540 + + + RPT541 + + + RPT542 + + + RPT543 + + + RPT544 + + + RPT545 + + + RPT546 + + + RPT547 + + + RPT548 + + + RPT549 + + + RPT550 + + + RPT551 + + + RPT552 + + + RPT553 + + + RPT554 + + + RPT555 + + + RPT556 + + + RPT557 + + + RPT558 + + + RPT559 + + + RPT560 + + + RPT561 + + + RPT562 + + + RPT563 + + + RPT564 + + + RPT565 + + + RPT566 + + + RPT567 + + + RPT568 + + + RPT569 + + + RPT570 + + + RPT571 + + + RPT572 + + + RPT573 + + + RPT574 + + + RPT575 + + + RPT576 + + + RPT577 + + + RPT578 + + + RPT579 + + + RPT580 + + + RPT581 + + + RPT582 + + + RPT583 + + + RPT584 + + + RPT585 + + + RPT586 + + + RPT587 + + + RPT588 + + + RPT589 + + + RPT590 + + + RPT591 + + + RPT592 + + + RPT593 + + + RPT594 + + + RPT595 + + + RPT596 + + + RPT597 + + + RPT598 + + + RPT599 + + + RPT600 + + + RPT601 + + + RPT602 + + + RPT603 + + + RPT604 + + + RPT605 + + + RPT606 + + + RPT607 + + + RPT608 + + + RPT609 + + + RPT610 + + + RPT611 + + + RPT612 + + + RPT613 + + + RPT614 + + + RPT615 + + + RPT616 + + + RPT617 + + + RPT618 + + + RPT619 + + + RPT620 + + + RPT621 + + + RPT622 + + + RPT623 + + + RPT624 + + + RPT625 + + + RPT626 + + + RPT627 + + + RPT628 + + + RPT629 + + + RPT630 + + + RPT631 + + + RPT632 + + + RPT633 + + + RPT634 + + + RPT635 + + + RPT636 + + + RPT637 + + + RPT638 + + + RPT639 + + + RPT640 + + + RPT641 + + + RPT642 + + + RPT643 + + + RPT644 + + + RPT645 + + + RPT646 + + + RPT647 + + + RPT648 + + + RPT649 + + + RPT650 + + + RPT651 + + + RPT652 + + + RPT653 + + + RPT654 + + + RPT655 + + + RPT656 + + + RPT657 + + + RPT658 + + + RPT659 + + + RPT660 + + + RPT661 + + + RPT662 + + + RPT663 + + + RPT664 + + + RPT665 + + + RPT666 + + + RPT667 + + + RPT668 + + + RPT669 + + + RPT670 + + + RPT671 + + + RPT672 + + + RPT673 + + + RPT674 + + + RPT675 + + + RPT676 + + + RPT677 + + + RPT678 + + + RPT679 + + + RPT680 + + + RPT681 + + + RPT682 + + + RPT683 + + + RPT684 + + + RPT685 + + + RPT686 + + + RPT687 + + + RPT688 + + + RPT689 + + + RPT690 + + + RPT691 + + + RPT692 + + + RPT693 + + + RPT694 + + + RPT695 + + + RPT696 + + + RPT697 + + + RPT698 + + + RPT699 + + + RPT700 + + + RPT701 + + + RPT702 + + + RPT703 + + + RPT704 + + + RPT705 + + + RPT706 + + + RPT707 + + + RPT708 + + + RPT709 + + + RPT710 + + + RPT711 + + + RPT712 + + + RPT713 + + + RPT714 + + + RPT715 + + + RPT716 + + + RPT717 + + + RPT718 + + + RPT719 + + + RPT720 + + + RPT721 + + + RPT722 + + + RPT723 + + + RPT724 + + + RPT725 + + + RPT726 + + + RPT727 + + + RPT728 + + + RPT729 + + + RPT730 + + + RPT731 + + + RPT732 + + + RPT733 + + + RPT734 + + + RPT735 + + + RPT736 + + + RPT737 + + + RPT738 + + + RPT739 + + + RPT740 + + + RPT741 + + + RPT742 + + + RPT743 + + + RPT744 + + + RPT745 + + + RPT746 + + + RPT747 + + + RPT748 + + + RPT749 + + + RPT750 + + + RPT751 + + + RPT752 + + + RPT753 + + + RPT754 + + + RPT755 + + + RPT756 + + + RPT757 + + + RPT758 + + + RPT759 + + + RPT760 + + + RPT761 + + + RPT762 + + + RPT763 + + + RPT764 + + + RPT765 + + + RPT766 + + + RPT767 + + + RPT768 + + + RPT769 + + + RPT770 + + + RPT771 + + + RPT772 + + + RPT773 + + + RPT774 + + + RPT775 + + + RPT776 + + + RPT777 + + + RPT778 + + + RPT779 + + + RPT780 + + + RPT781 + + + RPT782 + + + RPT783 + + + RPT784 + + + RPT785 + + + RPT786 + + + RPT787 + + + RPT788 + + + RPT789 + + + RPT790 + + + RPT791 + + + RPT792 + + + RPT793 + + + RPT794 + + + RPT795 + + + RPT796 + + + RPT797 + + + RPT798 + + + RPT799 + + + RPT800 + + + RPT801 + + + RPT802 + + + RPT803 + + + RPT804 + + + RPT805 + + + RPT806 + + + RPT807 + + + RPT808 + + + RPT809 + + + RPT810 + + + RPT811 + + + RPT812 + + + RPT813 + + + RPT814 + + + RPT815 + + + RPT816 + + + RPT817 + + + RPT818 + + + RPT819 + + + RPT820 + + + RPT821 + + + RPT822 + + + RPT823 + + + RPT824 + + + RPT825 + + + RPT826 + + + RPT827 + + + RPT828 + + + RPT829 + + + RPT830 + + + RPT831 + + + RPT832 + + + RPT833 + + + RPT834 + + + RPT835 + + + RPT836 + + + RPT837 + + + RPT838 + + + RPT839 + + + RPT840 + + + RPT841 + + + RPT842 + + + RPT843 + + + RPT844 + + + RPT845 + + + RPT846 + + + RPT847 + + + RPT848 + + + RPT849 + + + RPT850 + + + RPT851 + + + RPT852 + + + RPT853 + + + RPT854 + + + RPT855 + + + RPT856 + + + RPT857 + + + RPT858 + + + RPT859 + + + RPT860 + + + RPT861 + + + RPT862 + + + RPT863 + + + RPT864 + + + RPT865 + + + RPT866 + + + RPT867 + + + RPT868 + + + RPT869 + + + RPT870 + + + RPT871 + + + RPT872 + + + RPT873 + + + RPT874 + + + RPT875 + + + RPT876 + + + RPT877 + + + RPT878 + + + RPT879 + + + RPT880 + + + RPT881 + + + RPT882 + + + RPT883 + + + RPT884 + + + RPT885 + + + RPT886 + + + RPT887 + + + RPT888 + + + RPT889 + + + RPT890 + + + RPT891 + + + RPT892 + + + RPT893 + + + RPT894 + + + RPT895 + + + RPT896 + + + RPT897 + + + RPT898 + + + RPT899 + + + RPT900 + + + RPT901 + + + RPT902 + + + RPT903 + + + RPT904 + + + RPT905 + + + RPT906 + + + RPT907 + + + RPT908 + + + RPT909 + + + RPT910 + + + RPT911 + + + RPT912 + + + RPT913 + + + RPT914 + + + RPT915 + + + RPT916 + + + RPT917 + + + RPT918 + + + RPT919 + + + RPT920 + + + RPT921 + + + RPT922 + + + RPT923 + + + RPT924 + + + RPT925 + + + RPT926 + + + RPT927 + + + RPT928 + + + RPT929 + + + RPT930 + + + RPT931 + + + RPT932 + + + RPT933 + + + RPT934 + + + RPT935 + + + RPT936 + + + RPT937 + + + RPT938 + + + RPT939 + + + RPT940 + + + RPT941 + + + RPT942 + + + RPT943 + + + RPT944 + + + RPT945 + + + RPT946 + + + RPT947 + + + RPT948 + + + RPT949 + + + RPT950 + + + RPT951 + + + RPT952 + + + RPT953 + + + RPT954 + + + RPT955 + + + RPT956 + + + RPT957 + + + RPT958 + + + RPT959 + + + RPT960 + + + RPT961 + + + RPT962 + + + RPT963 + + + RPT964 + + + RPT965 + + + RPT966 + + + RPT967 + + + RPT968 + + + RPT969 + + + RPT970 + + + RPT971 + + + RPT972 + + + RPT973 + + + RPT974 + + + RPT975 + + + RPT976 + + + RPT977 + + + RPT978 + + + RPT979 + + + RPT980 + + + RPT981 + + + RPT982 + + + RPT983 + + + RPT984 + + + RPT985 + + + RPT986 + + + RPT987 + + + RPT988 + + + RPT989 + + + RPT990 + + + RPT991 + + + RPT992 + + + RPT993 + + + RPT994 + + + RPT995 + + + RPT996 + + + RPT997 + + + RPT998 + + + RPT999 + + + RPT1000 + + + RPT1001 + + + RPT1002 + + + RPT1003 + + + RPT1004 + + + RPT1005 + + + RPT1006 + + + RPT1007 + + + RPT1008 + + + RPT1009 + + + RPT1010 + + + RPT1011 + + + RPT1012 + + + RPT1013 + + + RPT1014 + + + RPT1015 + + + RPT1016 + + + RPT1017 + + + RPT1018 + + + RPT1019 + + + RPT1020 + + + RPT1021 + + + RPT1022 + + + RPT1023 + + + RPT1024 + + + RPT1025 + + + RPT1026 + + + RPT1027 + + + RPT1028 + + + RPT1029 + + + RPT1030 + + + RPT1031 + + + RPT1032 + + + RPT1033 + + + RPT1034 + + + RPT1035 + + + RPT1036 + + + RPT1037 + + + RPT1038 + + + RPT1039 + + + RPT1040 + + + RPT1041 + + + RPT1042 + + + RPT1043 + + + RPT1044 + + + RPT1045 + + + RPT1046 + + + RPT1047 + + + RPT1048 + + + RPT1049 + + + RPT1050 + + + RPT1051 + + + RPT1052 + + + RPT1053 + + + RPT1054 + + + RPT1055 + + + RPT1056 + + + RPT1057 + + + RPT1058 + + + RPT1059 + + + RPT1060 + + + RPT1061 + + + RPT1062 + + + RPT1063 + + + RPT1064 + + + RPT1065 + + + RPT1066 + + + RPT1067 + + + RPT1068 + + + RPT1069 + + + RPT1070 + + + RPT1071 + + + RPT1072 + + + RPT1073 + + + RPT1074 + + + RPT1075 + + + RPT1076 + + + RPT1077 + + + RPT1078 + + + RPT1079 + + + RPT1080 + + + RPT1081 + + + RPT1082 + + + RPT1083 + + + RPT1084 + + + RPT1085 + + + RPT1086 + + + RPT1087 + + + RPT1088 + + + RPT1089 + + + RPT1090 + + + RPT1091 + + + RPT1092 + + + RPT1093 + + + RPT1094 + + + RPT1095 + + + RPT1096 + + + RPT1097 + + + RPT1098 + + + RPT1099 + + + RPT1100 + + + RPT1101 + + + RPT1102 + + + RPT1103 + + + RPT1104 + + + RPT1105 + + + RPT1106 + + + RPT1107 + + + RPT1108 + + + RPT1109 + + + RPT1110 + + + RPT1111 + + + RPT1112 + + + RPT1113 + + + RPT1114 + + + RPT1115 + + + RPT1116 + + + RPT1117 + + + RPT1118 + + + RPT1119 + + + RPT1120 + + + RPT1121 + + + RPT1122 + + + RPT1123 + + + RPT1124 + + + RPT1125 + + + RPT1126 + + + RPT1127 + + + RPT1128 + + + RPT1129 + + + RPT1130 + + + RPT1131 + + + RPT1132 + + + RPT1133 + + + RPT1134 + + + RPT1135 + + + RPT1136 + + + RPT1137 + + + RPT1138 + + + RPT1139 + + + RPT1140 + + + RPT1141 + + + RPT1142 + + + RPT1143 + + + RPT1144 + + + RPT1145 + + + RPT1146 + + + RPT1147 + + + RPT1148 + + + RPT1149 + + + RPT1150 + + + RPT1151 + + + RPT1152 + + + RPT1153 + + + RPT1154 + + + RPT1155 + + + RPT1156 + + + RPT1157 + + + RPT1158 + + + RPT1159 + + + RPT1160 + + + RPT1161 + + + RPT1162 + + + RPT1163 + + + RPT1164 + + + RPT1165 + + + RPT1166 + + + RPT1167 + + + RPT1168 + + + RPT1169 + + + RPT1170 + + + RPT1171 + + + RPT1172 + + + RPT1173 + + + RPT1174 + + + RPT1175 + + + RPT1176 + + + RPT1177 + + + RPT1178 + + + RPT1179 + + + RPT1180 + + + RPT1181 + + + RPT1182 + + + RPT1183 + + + RPT1184 + + + RPT1185 + + + RPT1186 + + + RPT1187 + + + RPT1188 + + + RPT1189 + + + RPT1190 + + + RPT1191 + + + RPT1192 + + + RPT1193 + + + RPT1194 + + + RPT1195 + + + RPT1196 + + + RPT1197 + + + RPT1198 + + + RPT1199 + + + RPT1200 + + + RPT1201 + + + RPT1202 + + + RPT1203 + + + RPT1204 + + + RPT1205 + + + RPT1206 + + + RPT1207 + + + RPT1208 + + + RPT1209 + + + RPT1210 + + + RPT1211 + + + RPT1212 + + + RPT1213 + + + RPT1214 + + + RPT1215 + + + RPT1216 + + + RPT1217 + + + RPT1218 + + + RPT1219 + + + RPT1220 + + + RPT1221 + + + RPT1222 + + + RPT1223 + + + RPT1224 + + + RPT1225 + + + RPT1226 + + + RPT1227 + + + RPT1228 + + + RPT1229 + + + RPT1230 + + + RPT1231 + + + RPT1232 + + + RPT1233 + + + RPT1234 + + + RPT1235 + + + RPT1236 + + + RPT1237 + + + RPT1238 + + + RPT1239 + + + RPT1240 + + + RPT1241 + + + RPT1242 + + + RPT1243 + + + RPT1244 + + + RPT1245 + + + RPT1246 + + + RPT1247 + + + RPT1248 + + + RPT1249 + + + RPT1250 + + + RPT1251 + + + RPT1252 + + + RPT1253 + + + RPT1254 + + + RPT1255 + + + RPT1256 + + + RPT1257 + + + RPT1258 + + + RPT1259 + + + RPT1260 + + + RPT1261 + + + RPT1262 + + + RPT1263 + + + RPT1264 + + + RPT1265 + + + RPT1266 + + + RPT1267 + + + RPT1268 + + + RPT1269 + + + RPT1270 + + + RPT1271 + + + RPT1272 + + + RPT1273 + + + RPT1274 + + + RPT1275 + + + RPT1276 + + + RPT1277 + + + RPT1278 + + + RPT1279 + + + RPT1280 + + + RPT1281 + + + RPT1282 + + + RPT1283 + + + RPT1284 + + + RPT1285 + + + RPT1286 + + + RPT1287 + + + RPT1288 + + + RPT1289 + + + RPT1290 + + + RPT1291 + + + RPT1292 + + + RPT1293 + + + RPT1294 + + + RPT1295 + + + RPT1296 + + + RPT1297 + + + RPT1298 + + + RPT1299 + + + RPT1300 + + + RPT1301 + + + RPT1302 + + + RPT1303 + + + RPT1304 + + + RPT1305 + + + RPT1306 + + + RPT1307 + + + RPT1308 + + + RPT1309 + + + RPT1310 + + + RPT1311 + + + RPT1312 + + + RPT1313 + + + RPT1314 + + + RPT1315 + + + RPT1316 + + + RPT1317 + + + RPT1318 + + + RPT1319 + + + RPT1320 + + + RPT1321 + + + RPT1322 + + + RPT1323 + + + RPT1324 + + + RPT1325 + + + RPT1326 + + + RPT1327 + + + RPT1328 + + + RPT1329 + + + RPT1330 + + + RPT1331 + + + RPT1332 + + + RPT1333 + + + RPT1334 + + + RPT1335 + + + RPT1336 + + + RPT1337 + + + RPT1338 + + + RPT1339 + + + RPT1340 + + + RPT1341 + + + RPT1342 + + + RPT1343 + + + RPT1344 + + + RPT1345 + + + RPT1346 + + + RPT1347 + + + RPT1348 + + + RPT1349 + + + RPT1350 + + + RPT1351 + + + RPT1352 + + + RPT1353 + + + RPT1354 + + + RPT1355 + + + RPT1356 + + + RPT1357 + + + RPT1358 + + + RPT1359 + + + RPT1360 + + + RPT1361 + + + RPT1362 + + + RPT1363 + + + RPT1364 + + + RPT1365 + + + RPT1366 + + + RPT1367 + + + RPT1368 + + + RPT1369 + + + RPT1370 + + + RPT1371 + + + RPT1372 + + + RPT1373 + + + RPT1374 + + + RPT1375 + + + RPT1376 + + + RPT1377 + + + RPT1378 + + + RPT1379 + + + RPT1380 + + + RPT1381 + + + RPT1382 + + + RPT1383 + + + RPT1384 + + + RPT1385 + + + RPT1386 + + + RPT1387 + + + RPT1388 + + + RPT1389 + + + RPT1390 + + + RPT1391 + + + RPT1392 + + + RPT1393 + + + RPT1394 + + + RPT1395 + + + RPT1396 + + + RPT1397 + + + RPT1398 + + + RPT1399 + + + RPT1400 + + + RPT1401 + + + RPT1402 + + + RPT1403 + + + RPT1404 + + + RPT1405 + + + RPT1406 + + + RPT1407 + + + RPT1408 + + + RPT1409 + + + RPT1410 + + + RPT1411 + + + RPT1412 + + + RPT1413 + + + RPT1414 + + + RPT1415 + + + RPT1416 + + + RPT1417 + + + RPT1418 + + + RPT1419 + + + RPT1420 + + + RPT1421 + + + RPT1422 + + + RPT1423 + + + RPT1424 + + + RPT1425 + + + RPT1426 + + + RPT1427 + + + RPT1428 + + + RPT1429 + + + RPT1430 + + + RPT1431 + + + RPT1432 + + + RPT1433 + + + RPT1434 + + + RPT1435 + + + RPT1436 + + + RPT1437 + + + RPT1438 + + + RPT1439 + + + RPT1440 + + + RPT1441 + + + RPT1442 + + + RPT1443 + + + RPT1444 + + + RPT1445 + + + RPT1446 + + + RPT1447 + + + RPT1448 + + + RPT1449 + + + RPT1450 + + + RPT1451 + + + RPT1452 + + + RPT1453 + + + RPT1454 + + + RPT1455 + + + RPT1456 + + + RPT1457 + + + RPT1458 + + + RPT1459 + + + RPT1460 + + + RPT1461 + + + RPT1462 + + + RPT1463 + + + RPT1464 + + + RPT1465 + + + RPT1466 + + + RPT1467 + + + RPT1468 + + + RPT1469 + + + RPT1470 + + + RPT1471 + + + RPT1472 + + + RPT1473 + + + RPT1474 + + + RPT1475 + + + RPT1476 + + + RPT1477 + + + RPT1478 + + + RPT1479 + + + RPT1480 + + + RPT1481 + + + RPT1482 + + + RPT1483 + + + RPT1484 + + + RPT1485 + + + RPT1486 + + + RPT1487 + + + RPT1488 + + + RPT1489 + + + RPT1490 + + + RPT1491 + + + RPT1492 + + + RPT1493 + + + RPT1494 + + + RPT1495 + + + RPT1496 + + + RPT1497 + + + RPT1498 + + + RPT1499 + + + RPT1500 + + + RPT1501 + + + RPT1502 + + + RPT1503 + + + RPT1504 + + + RPT1505 + + + RPT1506 + + + RPT1507 + + + RPT1508 + + + RPT1509 + + + RPT1510 + + + RPT1511 + + + RPT1512 + + + RPT1513 + + + RPT1514 + + + RPT1515 + + + RPT1516 + + + RPT1517 + + + RPT1518 + + + RPT1519 + + + RPT1520 + + + RPT1521 + + + RPT1522 + + + RPT1523 + + + RPT1524 + + + RPT1525 + + + RPT1526 + + + RPT1527 + + + RPT1528 + + + RPT1529 + + + RPT1530 + + + RPT1531 + + + RPT1532 + + + RPT1533 + + + RPT1534 + + + RPT1535 + + + RPT1536 + + + RPT1537 + + + RPT1538 + + + RPT1539 + + + RPT1540 + + + RPT1541 + + + RPT1542 + + + RPT1543 + + + RPT1544 + + + RPT1545 + + + RPT1546 + + + RPT1547 + + + RPT1548 + + + RPT1549 + + + RPT1550 + + + RPT1551 + + + RPT1552 + + + RPT1553 + + + RPT1554 + + + RPT1555 + + + RPT1556 + + + RPT1557 + + + RPT1558 + + + RPT1559 + + + RPT1560 + + + RPT1561 + + + RPT1562 + + + RPT1563 + + + RPT1564 + + + RPT1565 + + + RPT1566 + + + RPT1567 + + + RPT1568 + + + RPT1569 + + + RPT1570 + + + RPT1571 + + + RPT1572 + + + RPT1573 + + + RPT1574 + + + RPT1575 + + + RPT1576 + + + RPT1577 + + + RPT1578 + + + RPT1579 + + + RPT1580 + + + RPT1581 + + + RPT1582 + + + RPT1583 + + + RPT1584 + + + RPT1585 + + + RPT1586 + + + RPT1587 + + + RPT1588 + + + RPT1589 + + + RPT1590 + + + RPT1591 + + + RPT1592 + + + RPT1593 + + + RPT1594 + + + + step013 + Keep left at the fork, follow signs for A61/Périphérique Intérieur/La Roseraie/Toulouse-Centre/Montpellier/Barcelone/Foix and merge onto A61Partial toll road + + RPT1595 + + + RPT1596 + + + RPT1597 + + + RPT1598 + + + RPT1599 + + + RPT1600 + + + RPT1601 + + + RPT1602 + + + RPT1603 + + + RPT1604 + + + RPT1605 + + + RPT1606 + + + RPT1607 + + + RPT1608 + + + RPT1609 + + + RPT1610 + + + RPT1611 + + + RPT1612 + + + RPT1613 + + + RPT1614 + + + RPT1615 + + + RPT1616 + + + RPT1617 + + + RPT1618 + + + RPT1619 + + + RPT1620 + + + RPT1621 + + + RPT1622 + + + RPT1623 + + + RPT1624 + + + RPT1625 + + + RPT1626 + + + RPT1627 + + + RPT1628 + + + RPT1629 + + + RPT1630 + + + RPT1631 + + + RPT1632 + + + RPT1633 + + + RPT1634 + + + RPT1635 + + + RPT1636 + + + RPT1637 + + + RPT1638 + + + RPT1639 + + + RPT1640 + + + RPT1641 + + + RPT1642 + + + RPT1643 + + + RPT1644 + + + RPT1645 + + + RPT1646 + + + RPT1647 + + + RPT1648 + + + RPT1649 + + + RPT1650 + + + RPT1651 + + + RPT1652 + + + RPT1653 + + + RPT1654 + + + RPT1655 + + + RPT1656 + + + RPT1657 + + + RPT1658 + + + RPT1659 + + + RPT1660 + + + RPT1661 + + + RPT1662 + + + RPT1663 + + + RPT1664 + + + RPT1665 + + + RPT1666 + + + RPT1667 + + + RPT1668 + + + RPT1669 + + + RPT1670 + + + RPT1671 + + + RPT1672 + + + RPT1673 + + + RPT1674 + + + RPT1675 + + + RPT1676 + + + RPT1677 + + + RPT1678 + + + + step014 + Take exit 15-La Roseraie toward Lavaur/Jolimont + + RPT1679 + + + RPT1680 + + + RPT1681 + + + RPT1682 + + + RPT1683 + + + RPT1684 + + + RPT1685 + + + RPT1686 + + + RPT1687 + + + RPT1688 + + + RPT1689 + + + RPT1690 + + + RPT1691 + + + + step015 + Turn right onto Route d'Agde/D112Go through 2 roundabouts + + RPT1692 + + + RPT1693 + + + RPT1694 + + + RPT1695 + + + RPT1696 + + + RPT1697 + + + RPT1698 + + + RPT1699 + + + RPT1700 + + + RPT1701 + + + RPT1702 + + + RPT1703 + + + RPT1704 + + + RPT1705 + + + RPT1706 + + + RPT1707 + + + RPT1708 + + + RPT1709 + + + RPT1710 + + + RPT1711 + + + RPT1712 + + + RPT1713 + + + RPT1714 + + + RPT1715 + + + RPT1716 + + + RPT1717 + + + RPT1718 + + + RPT1719 + + + RPT1720 + + + RPT1721 + + + RPT1722 + + + RPT1723 + + + RPT1724 + + + RPT1725 + + + RPT1726 + + + RPT1727 + + + RPT1728 + + + RPT1729 + + + RPT1730 + + + RPT1731 + + + RPT1732 + + + RPT1733 + + + RPT1734 + + + RPT1735 + + + RPT1736 + + + RPT1737 + + + RPT1738 + + + RPT1739 + + + RPT1740 + + + RPT1741 + + + RPT1742 + + + RPT1743 + + + RPT1744 + + + RPT1745 + + + RPT1746 + + + RPT1747 + + + RPT1748 + + + RPT1749 + + + RPT1750 + + + RPT1751 + + + RPT1752 + + + RPT1753 + + + RPT1754 + + + RPT1755 + + + RPT1756 + + + RPT1757 + + + RPT1758 + + + RPT1759 + + + RPT1760 + + + RPT1761 + + + RPT1762 + + + RPT1763 + + + RPT1764 + + + RPT1765 + + + RPT1766 + + + RPT1767 + + + RPT1768 + + + RPT1769 + + + RPT1770 + + + RPT1771 + + + RPT1772 + + + RPT1773 + + + RPT1774 + + + RPT1775 + + + RPT1776 + + + RPT1777 + + + RPT1778 + + + RPT1779 + + + RPT1780 + + + RPT1781 + + + RPT1782 + + + RPT1783 + + + RPT1784 + + + RPT1785 + + + RPT1786 + + + RPT1787 + + + RPT1788 + + + RPT1789 + + + RPT1790 + + + RPT1791 + + + RPT1792 + + + RPT1793 + + + RPT1794 + + + RPT1795 + + + RPT1796 + + + RPT1797 + + + RPT1798 + + + RPT1799 + + + RPT1800 + + + RPT1801 + + + RPT1802 + + + RPT1803 + + + RPT1804 + + + RPT1805 + + + RPT1806 + + + RPT1807 + + + RPT1808 + + + RPT1809 + + + RPT1810 + + + RPT1811 + + + RPT1812 + + + RPT1813 + + + RPT1814 + + + RPT1815 + + + RPT1816 + + + RPT1817 + + + RPT1818 + + + RPT1819 + + + RPT1820 + + + + step016 + Route d'Agde/D112 turns slightly right and becomes Av. Yves BrunaudGo through 1 roundabout + + RPT1821 + + + RPT1822 + + + RPT1823 + + + RPT1824 + + + RPT1825 + + + RPT1826 + + + RPT1827 + + + RPT1828 + + + RPT1829 + + + RPT1830 + + + RPT1831 + + + RPT1832 + + + RPT1833 + + + RPT1834 + + + RPT1835 + + + RPT1836 + + + RPT1837 + + + RPT1838 + + + RPT1839 + + + RPT1840 + + + RPT1841 + + + RPT1842 + + + RPT1843 + + + RPT1844 + + + RPT1845 + + + RPT1846 + + + RPT1847 + + + RPT1848 + + + RPT1849 + + + RPT1850 + + + RPT1851 + + + RPT1852 + + + + step017 + Continue onto Av. Léon Blum + + RPT1853 + + + RPT1854 + + + RPT1855 + + + RPT1856 + + + RPT1857 + + + RPT1858 + + + RPT1859 + + + RPT1860 + + + RPT1861 + + + RPT1862 + + + RPT1863 + + + RPT1864 + + + RPT1865 + + + RPT1866 + + + RPT1867 + + + RPT1868 + + + RPT1869 + + + RPT1870 + + + RPT1871 + + + RPT1872 + + + RPT1873 + + + RPT1874 + + + RPT1875 + + + RPT1876 + + + RPT1877 + + + + step018 + Continue onto Av. Georges Pompidou + + RPT1878 + + + RPT1879 + + + RPT1880 + + + RPT1881 + + + RPT1882 + + + RPT1883 + + + RPT1884 + + + RPT1885 + + + RPT1886 + + + RPT1887 + + + RPT1888 + + + RPT1889 + + + RPT1890 + + + RPT1891 + + + RPT1892 + + + + step019 + Turn right onto Bd de Marengo + + RPT1893 + + + RPT1894 + + + RPT1895 + + + RPT1896 + + + RPT1897 + + + RPT1898 + + + RPT1899 + + + RPT1900 + + + RPT1901 + + + RPT1902 + + + RPT1903 + + + RPT1904 + + + RPT1905 + + + RPT1906 + + + RPT1907 + + + RPT1908 + + + RPT1909 + + + RPT1910 + + + RPT1911 + + + RPT1912 + + + RPT1913 + + + RPT1914 + + + RPT1915 + + + RPT1916 + + + RPT1917 + + + RPT1918 + + + RPT1919 + + + RPT1920 + + + RPT1921 + + + RPT1922 + + + RPT1923 + + + RPT1924 + + + RPT1925 + + + RPT1926 + + + RPT1927 + + + RPT1928 + + + RPT1929 + + + RPT1930 + + + RPT1931 + + + RPT1932 + + + RPT1933 + + + RPT1934 + + + RPT1935 + + + RPT1936 + + + RPT1937 + + + RPT1938 + + + RPT1939 + + + RPT1940 + + + RPT1941 + + + RPT1942 + + + RPT1943 + + + + step020 + Continue onto Pont Riquet + + RPT1944 + + + RPT1945 + + + + step021 + Continue onto Allée Jean Jaurès/Allées Jean-Jaurès + + RPT1946 + + + RPT1947 + + + RPT1948 + + + RPT1949 + + + RPT1950 + + + RPT1951 + + + RPT1952 + + + RPT1953 + + + RPT1954 + + + RPT1955 + + + RPT1956 + + + RPT1957 + + + RPT1958 + + + RPT1959 + + + RPT1960 + + + RPT1961 + + + RPT1962 + + + RPT1963 + + + + step022 + Slight left onto Allée Président Roosevelt + + RPT1964 + + + RPT1965 + + + RPT1966 + + + RPT1967 + + + RPT1968 + + + RPT1969 + + + + step023 + Turn right onto Pl. du Président Thomas Wilson + + RPT1970 + + + RPT1971 + + + RPT1972 + + + RPT1973 + + + RPT1974 + + + RPT1975 + + + RPT1976 + + + RPT1977 + + + RPT1978 + + + RPT1979 + + + RPT1980 + + + RPT1981 + + + + step024 + Take the 2nd right onto Rue Lafayette + + RPT1982 + + + RPT1983 + + + RPT1984 + + + RPT1985 + + + RPT1986 + + + RPT1987 + + + RPT1988 + + + RPT1989 + + + RPT1990 + + + + step025 + Turn left onto Rue RoschachRestricted usage roadDestination will be on the right + + RPT1991 + + + RPT1992 + + + RPT1993 + + + RPT1994 + + + RPT1995 + + + + overview + Overview + + RPT1996 + + + RPT1997 + + + RPT1998 + + + RPT1999 + + + RPT2000 + + + RPT2001 + + + RPT2002 + + + RPT2003 + + + RPT2004 + + + RPT2005 + + + RPT2006 + + + RPT2007 + + + RPT2008 + + + RPT2009 + + + RPT2010 + + + RPT2011 + + + RPT2012 + + + RPT2013 + + + RPT2014 + + + RPT2015 + + + RPT2016 + + + RPT2017 + + + RPT2018 + + + RPT2019 + + + RPT2020 + + + RPT2021 + + + RPT2022 + + + RPT2023 + + + RPT2024 + + + RPT2025 + + + RPT2026 + + + RPT2027 + + + RPT2028 + + + RPT2029 + + + RPT2030 + + + RPT2031 + + + RPT2032 + + + RPT2033 + + + RPT2034 + + + RPT2035 + + + RPT2036 + + + RPT2037 + + + RPT2038 + + + RPT2039 + + + RPT2040 + + + RPT2041 + + + RPT2042 + + + RPT2043 + + + RPT2044 + + + RPT2045 + + + RPT2046 + + + RPT2047 + + + RPT2048 + + + RPT2049 + + + RPT2050 + + + RPT2051 + + + RPT2052 + + + RPT2053 + + + RPT2054 + + + RPT2055 + + + RPT2056 + + + RPT2057 + + + RPT2058 + + + RPT2059 + + + RPT2060 + + + RPT2061 + + + RPT2062 + + + RPT2063 + + + RPT2064 + + + RPT2065 + + + RPT2066 + + + RPT2067 + + + RPT2068 + + + RPT2069 + + + RPT2070 + + + RPT2071 + + + RPT2072 + + + RPT2073 + + + RPT2074 + + + RPT2075 + + + RPT2076 + + + RPT2077 + + + RPT2078 + + + RPT2079 + + + RPT2080 + + + RPT2081 + + + RPT2082 + + + RPT2083 + + + RPT2084 + + + RPT2085 + + + RPT2086 + + + RPT2087 + + + RPT2088 + + + RPT2089 + + + RPT2090 + + + RPT2091 + + + RPT2092 + + + RPT2093 + + + RPT2094 + + + RPT2095 + + + RPT2096 + + + RPT2097 + + + RPT2098 + + + RPT2099 + + + RPT2100 + + + RPT2101 + + + RPT2102 + + + RPT2103 + + + RPT2104 + + + RPT2105 + + + RPT2106 + + + RPT2107 + + + RPT2108 + + + RPT2109 + + + RPT2110 + + + RPT2111 + + + RPT2112 + + + RPT2113 + + + RPT2114 + + + RPT2115 + + + RPT2116 + + + RPT2117 + + + RPT2118 + + + RPT2119 + + + RPT2120 + + + RPT2121 + + + RPT2122 + + + RPT2123 + + + RPT2124 + + + RPT2125 + + + RPT2126 + + + RPT2127 + + + RPT2128 + + + RPT2129 + + + RPT2130 + + + RPT2131 + + + RPT2132 + + + RPT2133 + + + RPT2134 + + + RPT2135 + + + RPT2136 + + + RPT2137 + + + RPT2138 + + + RPT2139 + + + RPT2140 + + + RPT2141 + + + RPT2142 + + + RPT2143 + + + RPT2144 + + + RPT2145 + + + RPT2146 + + + RPT2147 + + + RPT2148 + + + RPT2149 + + + RPT2150 + + + RPT2151 + + + RPT2152 + + + RPT2153 + + + RPT2154 + + + RPT2155 + + + RPT2156 + + + RPT2157 + + + RPT2158 + + + RPT2159 + + + RPT2160 + + + RPT2161 + + + RPT2162 + + + RPT2163 + + + RPT2164 + + + RPT2165 + + + RPT2166 + + + RPT2167 + + + RPT2168 + + + RPT2169 + + + RPT2170 + + + RPT2171 + + + RPT2172 + + + RPT2173 + + + RPT2174 + + + RPT2175 + + + RPT2176 + + + RPT2177 + + + RPT2178 + + + RPT2179 + + + RPT2180 + + + RPT2181 + + + RPT2182 + + + RPT2183 + + + RPT2184 + + + RPT2185 + + + RPT2186 + + + RPT2187 + + + RPT2188 + + + RPT2189 + + + RPT2190 + + + RPT2191 + + + RPT2192 + + + RPT2193 + + + RPT2194 + + + RPT2195 + + + RPT2196 + + + RPT2197 + + + RPT2198 + + + RPT2199 + + + RPT2200 + + + RPT2201 + + + RPT2202 + + + RPT2203 + + + RPT2204 + + + RPT2205 + + + RPT2206 + + + RPT2207 + + + RPT2208 + + + RPT2209 + + + RPT2210 + + + RPT2211 + + + RPT2212 + + + RPT2213 + + + RPT2214 + + + RPT2215 + + + RPT2216 + + + RPT2217 + + + RPT2218 + + + RPT2219 + + + RPT2220 + + + RPT2221 + + + RPT2222 + + + RPT2223 + + + RPT2224 + + + RPT2225 + + + RPT2226 + + + RPT2227 + + + RPT2228 + + + RPT2229 + + + RPT2230 + + + RPT2231 + + + RPT2232 + + + RPT2233 + + + RPT2234 + + + RPT2235 + + + RPT2236 + + + RPT2237 + + + RPT2238 + + + RPT2239 + + + RPT2240 + + + RPT2241 + + + RPT2242 + + + RPT2243 + + + RPT2244 + + + RPT2245 + + + RPT2246 + + + RPT2247 + + + RPT2248 + + + RPT2249 + + + RPT2250 + + + RPT2251 + + + RPT2252 + + + RPT2253 + + + RPT2254 + + + RPT2255 + + + RPT2256 + + + RPT2257 + + + RPT2258 + + + RPT2259 + + + RPT2260 + + + RPT2261 + + + RPT2262 + + + RPT2263 + + + RPT2264 + + + RPT2265 + + + RPT2266 + + + RPT2267 + + + RPT2268 + + + RPT2269 + + + RPT2270 + + + RPT2271 + + + RPT2272 + + + RPT2273 + + + RPT2274 + + + RPT2275 + + + RPT2276 + + + RPT2277 + + + RPT2278 + + + RPT2279 + + + RPT2280 + + + RPT2281 + + + RPT2282 + + + RPT2283 + + + RPT2284 + + + RPT2285 + + + RPT2286 + + + RPT2287 + + + RPT2288 + + + RPT2289 + + + RPT2290 + + + RPT2291 + + + RPT2292 + + + RPT2293 + + + RPT2294 + + + RPT2295 + + + RPT2296 + + + RPT2297 + + + RPT2298 + + + RPT2299 + + + RPT2300 + + + RPT2301 + + + RPT2302 + + + RPT2303 + + + RPT2304 + + + RPT2305 + + + RPT2306 + + + RPT2307 + + + RPT2308 + + + RPT2309 + + + RPT2310 + + + RPT2311 + + + RPT2312 + + + RPT2313 + + + RPT2314 + + + RPT2315 + + + RPT2316 + + + RPT2317 + + + RPT2318 + + + RPT2319 + + + RPT2320 + + + diff --git a/gpsbabel/reference/google-direction.xml b/gpsbabel/reference/google-direction.xml new file mode 100644 index 000000000..d281acda7 --- /dev/null +++ b/gpsbabel/reference/google-direction.xml @@ -0,0 +1,616 @@ + + + OK + + A68 + + + DRIVING + + 43.9269100 + 2.1462000 + + + 43.9266100 + 2.1460700 + + + enbkGwdbLF@BAn@X + + + 3 + 1 min + + Head <b>south</b> on <b>Rue du Palais</b> toward <b>Rue de l'Ort en Salvy</b> + + 35 + 35 m + + + + DRIVING + + 43.9266100 + 2.1460700 + + + 43.9265500 + 2.1462100 + + + ilbkG}cbLJ[ + + + 12 + 1 min + + Turn <b>left</b> onto <b>Pl. du Palais</b> + + 13 + 13 m + + + + DRIVING + + 43.9265500 + 2.1462100 + + + 43.9256200 + 2.1455100 + + + }kbkGydbLZRxCnABF?J?R + + + 16 + 1 min + + Turn <b>right</b> onto <b>Rue du Sel</b> + + 125 + 0.1 km + + + + DRIVING + + 43.9256200 + 2.1455100 + + + 43.9258300 + 2.1450300 + + + cfbkGm`bLEFAHCJCNMJKd@ + + + 33 + 1 min + + Slight <b>right</b> onto <b>Pl. Lapèrouse</b> + + 46 + 46 m + + + + DRIVING + + 43.9258300 + 2.1450300 + + + 43.9242000 + 2.1443300 + + + mgbkGm}aL?^?B@BBFBFDBB@H@NBHAR@tABJAB?F?JBNBNHLHPN~@X + + + 82 + 1 min + + Slight <b>left</b> to stay on <b>Pl. Lapèrouse</b> + + 206 + 0.2 km + + + + DRIVING + + 43.9242000 + 2.1443300 + + + 43.9224900 + 2.1422800 + + + g}akGayaL|ArB\b@fCbDl@n@b@l@ + + + 23 + 1 min + + Continue onto <b>Av. Général de Gaulle</b> + + 251 + 0.3 km + + + + DRIVING + + 43.9224900 + 2.1422800 + + + 43.9223300 + 2.1392200 + + + qrakGglaL?H@B?BDBD@BjAXfLKvA + + + 40 + 1 min + + At the roundabout, take the <b>1st</b> exit onto <b>Av. Maréchal Joffre</b> + + 250 + 0.2 km + + + + DRIVING + + 43.9223300 + 2.1392200 + + + 43.9195900 + 2.1350000 + + + qqakGcy`LA??@?@A??@?@?@?@?@A@@@?@?@?@?@@@?@?@@??@@??@Rf@R\p@rAV^z@pB|A~DlBlEdAh@`BbA + + + 61 + 1 min + + At the roundabout, take the <b>1st</b> exit onto <b>Bd Lacombe</b> + + 470 + 0.5 km + + + + DRIVING + + 43.9195900 + 2.1350000 + + + 43.9183600 + 2.1182700 + + + m`akGw~_LRrGBlAH`D@JJlE@`@CTBz@D`B?l@JrDDX`@jPb@fQFxD@lFBjBHvDAb@@V?@?@@NBNFTRl@^nADTDV + + + 145 + 2 mins + + Turn <b>right</b> onto <b>Av. François Verdier/D988</b><div style="font-size:0.9em">Continue to follow D988</div> + + 1355 + 1.4 km + + + + DRIVING + + 43.9183600 + 2.1182700 + + + 43.9183100 + 2.1140400 + + + wx`kGev|KAFAF?H@H@FBHBDBDFP@L?L?LCZIj@C`@Gj@C~@?`@?HAb@?d@@p@@dADhDH`B + + + 37 + 1 min + + At the roundabout, take the <b>2nd</b> exit onto the <b>N88</b> ramp to <b>Montauban/Toulouse/Gaillac</b> + + 346 + 0.3 km + + + + DRIVING + + 43.9183100 + 2.1140400 + + + 43.9149800 + 2.0585100 + + + mx`kGw{{KLxG@xB?|BClCE|BEnDAdB@|AFzCBfAFtB@r@DxANfGFlBDpBFzBFhCHpCL~ENrCRnCXdC`@hCf@hCh@hCf@|B^hB\tA^pBTlAPnALnALpAHrADrA@rA@pAApAApACbAA\AfAEpACtAEtAEvACvAEvACxAEjA?LGzAExACxAExAEtACvAAtACtAArA?tA?rA@rA@rABtABtADjCFtCLjEHjDFxCBpC@vAF^B^HvAXjKDbBDxB?FHrCHdDF`CDpA@|A?b@DlC@`@DbB?XD|BBv@Bj@DbA@RFxA?ZLhERdHHtCBdA@ZB\?\Dh@ + + + 154 + 3 mins + + Merge onto <b>N88</b> + + 4497 + 4.5 km + + + + DRIVING + + 43.9149800 + 2.0585100 + + + 43.6381200 + 1.4831700 + + + sc`kGu`qKH|@LjAFv@P`BJr@PpANt@Nt@H\Hd@Nj@FZBFBHHVJb@@BDPBHBJBD`@hANb@Tp@LXDLDFRj@`@|@d@dATf@b@`AnBfE|BbF`BpDdBxD`A|BXj@p@|AHPTf@Xn@lBfE|AhDbBzDpArCtA~Cx@fBl@nAlApCrAzCb@|@j@fAh@dAj@`AZh@^n@`@n@`@l@d@p@l@z@\b@p@|@v@|@n@v@BBj@l@^^LLVVd@b@v@t@lAfAnAfAlAdAjAfAz@t@t@n@j@f@f@b@h@f@r@n@h@f@z@r@|@v@r@n@h@d@f@f@d@d@b@d@b@h@d@f@\b@d@f@f@p@^f@`@j@`@h@p@bAh@z@d@v@j@bAr@lAl@bA`@n@j@`Ar@lANVp@hAp@jA^n@T^Tb@tA|BdAfB|@zA|@zANV~@~AzBtDFLHLPX|@|Ar@pAl@dAj@hAt@~At@bBf@jAl@vAf@tA@Bh@xARf@L`@h@~Af@`B\jAHT@BDNp@lCHV`@`Bb@rBTbARdAP~@Nv@Jr@RjAV~ABNLhARvAJ`AF\P~AP|AJjA@NP|B?BP|B?FFtAB`@F|AHvB@HBlADrBD~B?L@tB?~@A`C?d@A|AC|AClBARK~CM|CS`DAHQjC?HQvBAHYvCQ|AGj@WrCCJ?BCPIv@QzAE^K|@I`AUzBU|BW|BUzBCNGt@Ix@U|BU|BU`CAJ?BALK|@UzBU~BQzAO|AU|B[|CQ`BUvB]jDSrB[~Ci@fFMjA]tDGt@Ix@Gr@IfAIfAInBI|AE`BE~BE~BAT?d@IpIAhA?JAl@CbCE`DG`EEdCAz@EjCAv@GbFCbBAz@C`CEbCC`CC|BAfBA|AB`B@bBB~AD|AJbCJzBJ`BF`AL|AT|BP~A@N@DTdBT`B\tBf@xC@D^nBf@tCr@tDh@tCj@vCh@vC`@zBPbAf@lDX|BPzAP~BV|CD~@BZFdAVnFPdDFvAHvAV|EZ|FBfA^~Hb@~Ib@|Ib@dJ`@dI`@`I^|H`@`IR~DJhBDt@@N@FH~@LlA@LLlA^|CXrB`@dCd@hCf@~Bh@`Cv@vCl@pBDPt@`Cv@|B|@zBh@pAh@hABDTh@HNt@xApA|BjApBxAzBLTfA`Br@fAdDhFhAdBBDt@hAnB|CfA~AdDjFr@fA|DdG~BnDj@x@f@r@n@v@t@v@|@~@fAz@dAv@`An@BB~@j@lAl@jBp@|Af@tA\jB^|Cn@vDv@RD~Cn@bFfAvDt@fFdAdDr@~@Tl@N?@PDlA^XJh@RdA`@|@b@jB~@fAn@pAz@pA~@VRz@p@lAjAHFJLDDBDj@j@JJ~@`ArAbB@@dArAnAjBfAfBdAnB`AnBn@vAp@~Ar@lBj@fB@BJZFRbAnDNl@t@|C?@BHvArHdD~PpBlKdD|PnBbKJh@TlAz@pEr@rDx@nE|@vEj@rCbAnFlApGjAfG|@tE|@vElAnGt@|DTnAfArFz@tEr@nD|@zE|@vEr@pD\lBJf@l@`D\dBn@hDx@`Ex@nELp@DNVxARz@Lt@Nr@VtA?@BHBLVjAZ|A\tAXlA`@`B`@~A`@vAr@`Cb@xAh@`Bd@zAp@lBd@pAd@nAd@jAr@bBn@zAp@xAh@jAj@jAj@hAh@fA`@t@l@hAl@dAj@~@b@v@^l@j@|@b@p@f@t@f@v@h@t@t@bAV^V\dAvAV\h@r@Zd@@B\b@b@n@bArAdAvAtAlBhCjDdAxAtAhBtAnBfB`CfB`ChBbCpAhBjDxEfBbCtAjBd@n@pAfB~CfELPdBbCzCdEfBdCbChDBBxBzC|AxBtAnBpBlC`AxAvAnBdChDHNv@hAXb@?@T^^l@Zh@^p@^p@Zj@LZNV|@lB|@rBt@nBdAtC~@lC~AvEhAdD~BzGBJvBnGzAjEvA`EtA`EhAdDzC|IRl@dDrJXz@h@`BXbA`@|AV~@Rx@Rz@TbAVlAXzAZfB|@lF~@nFHj@n@pDp@hEBP`BlJBNb@jCFZ@FBNFXVtA^vBXtAP|@Pt@Rx@\rAT~@\lA`@rAb@tALZHXd@lAd@nAZt@f@jAf@lAx@bBt@xAx@dBx@`Bj@jAj@jAZn@\n@Zp@\p@l@lAxD`I\p@\p@Zr@\l@Zp@l@jAf@hAj@fAl@lAj@hAfAzBvAvCfAzB~CnGhD`HtDzHP^R^Xj@Tb@R`@FPl@pAb@fAb@jA^dAd@xAFPFR@Db@vA\tAXjA\~ALj@Nl@Nx@N|@V|ALr@PpAL|@NnANjA@DF~@PjBXlDP~ANtALjATzARnAVvAb@tBZvA\rA^zA^pAJXDNBHX|@l@`BVr@\z@z@nBd@dA`@v@l@nA\n@j@|@d@v@^l@f@t@f@n@j@t@v@`AbAjAjArA`@d@vFlG|DnEbG|G|ClDhDrDjD`DdCdCxJhMTV`BtBpEvE^^TRvCfCrE`DlC`B~XrPnClBNJFDPLv@l@HHfA|@|AxAjAhAr@v@d@h@|@dA|@hANTDDHLNTHJhElGvMrUpAtBhHtMVf@HNbCdE~AvCHNT^DLjApB\l@dAjBvBrDxAnC`@t@\x@vAbDpAfDx@dCb@xAb@vAr@rCz@vDp@hDj@lDb@zCZtCXxCV`DNlCJbCJfDBzAB`C?`DCxCC`CGfBIlCIxAOzBSnC_@dF?@KjAEj@qBrW}@nLwArREj@Gn@q@zIW|DMbCGtBGnBChBAxB?|B?lB@b@@tAHlCFhBFzAJjBN`CV|C\pDj@bG|@jJVfCRtB@F?@`@dEfA`LrAhNtAzNt@rHXlC?BD\VxB|@pFp@rD~@fEz@~CnBjGhBbGpBtGHRZ`AbA`D|@`DTv@Rt@Tr@Nd@L`@J^J^J^H\L`@b@`BF\T`AHd@R~@Lh@TtAP|@RxAFf@Ff@Ff@Dj@Dd@Dj@Dl@Bb@Bf@Bl@@h@@h@@f@?j@@f@?F?J?@?P?H?j@Ah@?d@Ad@Ad@Cd@Ch@Cd@A^Ej@Ef@Cd@Ed@Gh@Gj@Gj@Il@Il@Kp@]`CQlAOxAK|@KfAOhBIlAGfAGhAEhAChAEjAAbACbA?pA?zA@pA?J@V?B@X?VBtA@PBdADjAHfBJ`BHfAHx@Fx@JhANhARxADZHl@\xBb@fCJl@VtAZlBf@lCf@pCF\@FDV?BFV?DNv@^jB@H^rB`@vBVpADPZfB`@`CZ`BXzATpADX^rBVzAPfA\jBV|AVzATnAN|@VvARjAVvAZfBV`BJn@DVVrAVjAVvAF\VlAVjAd@vBZrA\xAl@`Cj@xB^xAh@lB`@rA^rAp@vB^jA@BTr@HP^hAXt@Tr@jAfDbDhI|CjHj@jAjAdCZn@lBrDhC|EpAtBd@v@?@~B|DxCpEtDjF~C~DvCnDjBvB@@x@|@@?|@`AtCxC|CvCJJ~@x@`DlCjEjDlEzCrA|@j@^x@d@?@@?vCjBxBtAfHlE`BbAnBnA?@B?@Bh@^p@b@TNbCzAFBhAn@`Bx@l@X`Cv@l@N@?\J@?nATvARz@HD@R@D?N@R@xADv@A\?bBG`AIhAOp@KxA[bAYB?TKDAfBq@XMb@Q~@i@jCcB|AkAfBoAh@[tAs@l@Uh@QHCLELCJCDAJCJE@?NC@?NELCJCBADAB?HAd@Gz@Ib@Ax@CfA@`BHbBPrDf@PBh@F~@LRBdCVlAF|@F\@B?P@V?X@zDBvB?B?@?@?`B?pXEhFCnC?^?`@?tA@D?L?fBHnAJn@FZHz@PhBd@hBr@^PnAn@B@RL@@HDJFHFbAp@d@^nBfBh@j@NNzBbClClCFFFFDD|@x@hA~@fAv@LJ@?PNpBpArAt@dBz@DBNDFBnCdARFd@N@?r@TZLzCl@nBZjBRjCPxFVfFXnBPjBTTDdBVhBZJBbB\bBb@xBl@vBp@xAh@tAh@PHPH|@\r@Z`Af@tAt@~CfBhDzBpCrBvD`DZXj@h@tCrCpBtBbBfBfUxUHJ~JhK^`@TVLPb@h@JLv@fAXb@LRBBBBPVbBrCn@nAfA~B?@@BNZ`AlCp@pBh@hB\nAZpAv@~Dh@tDRzA\nDJ|APzDJdEFvJD`H@z@?d@?D?B?B?VBpD?VFjEF`ERlFXnEH|@`@rDd@|DBLj@pDr@bDj@dCj@vBz@nCzBjGvAlDzBvF|@tBv@rBd@fAN`@@@@B?@FL`BhEvAxEx@xCVfADL@BJd@f@rB\`BtA|JBPLt@@HVzAZ|A@@Nr@@Bf@nBt@jCzAzEDRL`@ZlAj@xB\xAVlA`@lB^bBf@~BBLDRBJBLBLf@`CFVFX@?H`@z@`ENp@Rx@vBbKb@pBlAnFH\DV@BBJLj@\rABJBDXfAd@|Ab@tAh@zARf@b@jAz@rBLZHRz@pB~AxDrC|GdC`G|@|Bd@rA`@nA^pAj@rBJh@TrA + + + 1796 + 30 mins + + Continue onto <b>A68</b><div style="font-size:0.9em">Partial toll road</div> + + 61345 + 61.3 km + + + + DRIVING + + 43.6381200 + 1.4831700 + + + 43.6307000 + 1.4783300 + + + gajiGyt`HHXb@nC?DDRBT?DD`@BTHlA@Z?HBp@@TAl@A`AAr@APKxAKvAGp@AZ?@Er@AF?@AL?LAB?B?FAX?X?BAl@@`@@T@J?DFl@?B?B@B@LDN?@@@BPL^@BP^X`@TT\R\Jn@FTAVCZIXQXWZ]Vg@\u@Vi@N[LULOJMFGPMPKTIVIB?HCTEDEBCBGjAKJ?fFa@hN_A + + + 70 + 1 min + + Keep <b>left</b> at the fork, follow signs for <b>A61/Périphérique Intérieur/La Roseraie/Toulouse-Centre/Montpellier/Barcelone/Foix</b> and merge onto <b>A61</b><div style="font-size:0.9em">Partial toll road</div> + + 1413 + 1.4 km + + + + DRIVING + + 43.6307000 + 1.4783300 + + + 43.6276700 + 1.4784700 + + + {rhiGqv_H\Jx@CJ?r@?J@tBBJ?x@?pBIdBUHAZG + + + 22 + 1 min + + Take exit <b>15-La Roseraie</b> toward <b>Lavaur/Jolimont</b> + + 339 + 0.3 km + + + + DRIVING + + 43.6276700 + 1.4784700 + + + 43.6195800 + 1.4688100 + + + }_hiGmw_Ht@tAZj@JTBHBJ?DAF?HBFBHBHBDBDDDHBTNLLLP^x@T`@JJNPRVZZv@p@@@j@h@XXJLX\DDBDDDNPBFLHTNNJNFNHBBRLjBxAFFRTTT\d@Z^HLV`@b@p@HJh@|@`@l@^b@l@r@JNFLFLH\A@A@?@A@?@A@?@?@?@?@?@?@?@?@@@?@?@@@@@@@@@@?@?@?@?@?@??A@?@??A@??A?A@??A?A@??A?AX^^v@\x@d@hAh@zAJZBPFRFLZn@HJFHPVx@v@LHRPNHFBF@JAJCVOLGFAD@@?B@HB + + + 186 + 3 mins + + Turn <b>right</b> onto <b>Route d'Agde/D112</b><div style="font-size:0.9em">Go through 2 roundabouts</div> + + 1253 + 1.3 km + + + + DRIVING + + 43.6195800 + 1.4688100 + + + 43.6147700 + 1.4639700 + + + kmfiGa{}GbCzDxBdE@Bt@nAZh@d@l@HLvAzALJVN`A^l@HfBTX@F@F@LHBF@FDFF@H?DA@AFFj@d@DD`@h@`@t@@DJR + + + 74 + 1 min + + <b>Route d'Agde/D112</b> turns slightly <b>right</b> and becomes <b>Av. Yves Brunaud</b><div style="font-size:0.9em">Go through 1 roundabout</div> + + 688 + 0.7 km + + + + DRIVING + + 43.6147700 + 1.4639700 + + + 43.6140800 + 1.4610300 + + + ioeiGy||GL`@DNBPDR@NDp@@rAAz@?v@?P@H?F@H@HBNBLDNBJDJHLBFBBVb@Zl@ + + + 21 + 1 min + + Continue onto <b>Av. Léon Blum</b> + + 259 + 0.3 km + + + + DRIVING + + 43.6140800 + 1.4610300 + + + 43.6117400 + 1.4573100 + + + _keiGmj|GHNdEfHxBnDJPLP\l@T`@Vb@JRDLBHBLDVBT + + + 33 + 1 min + + Continue onto <b>Av. Georges Pompidou</b> + + 399 + 0.4 km + + + + DRIVING + + 43.6117400 + 1.4573100 + + + 43.6095500 + 1.4542600 + + + k|diGes{GA@GNCTALAL?L?H@H?JBLBNBNDJNVVb@HHp@lAPZT^LTZf@HHFHHFDBF@L@LAJ?PANCTCFAB@D?DBDDBD?@BDDHFHBF@@BFHLDFHNBBVf@ + + + 55 + 1 min + + Turn <b>right</b> onto <b>Bd de Marengo</b> + + 393 + 0.4 km + + + + DRIVING + + 43.6095500 + 1.4542600 + + + 43.6093000 + 1.4538800 + + + undiGc`{Gp@jA + + + 40 + 1 min + + Continue onto <b>Pont Riquet</b> + + 42 + 42 m + + + + DRIVING + + 43.6093000 + 1.4538800 + + + 43.6058700 + 1.4486200 + + + cmdiGw}zGNXV^FH~AjCxDrGVb@p@jAhB~CBBXf@R\d@~@HRH\FTV`@b@r@ + + + 91 + 2 mins + + Continue onto <b>Allée Jean Jaurès/Allées Jean-Jaurès</b> + + 571 + 0.6 km + + + + DRIVING + + 43.6058700 + 1.4486200 + + + 43.6051900 + 1.4476700 + + + uwciG{|yGHJ~@rAn@fAFHDJ + + + 54 + 1 min + + Slight <b>left</b> onto <b>Allée Président Roosevelt</b> + + 108 + 0.1 km + + + + DRIVING + + 43.6051900 + 1.4476700 + + + 43.6048900 + 1.4468900 + + + msciG}vyGCHALALALBLDNHRJPNRNLD@ + + + 22 + 1 min + + Turn <b>right</b> onto <b>Pl. du Président Thomas Wilson</b> + + 81 + 81 m + + + + DRIVING + + 43.6048900 + 1.4468900 + + + 43.6049500 + 1.4445900 + + + qqciGaryG?|@?j@A~@?bA?^AZErCAL + + + 29 + 1 min + + Take the 2nd <b>right</b> onto <b>Rue Lafayette</b> + + 185 + 0.2 km + + + + DRIVING + + 43.6049500 + 1.4445900 + + + 43.6046900 + 1.4445900 + + + }qciGucyGR@F@H?LC + + + 26 + 1 min + + Turn <b>left</b> onto <b>Rue Roschach</b><div style="font-size:0.9em">Restricted usage road</div><div style="font-size:0.9em">Destination will be on the right</div> + + 29 + 29 m + + + + 3125 + 52 mins + + + 74699 + 74.7 km + + + 43.9269100 + 2.1462000 + + + 43.6046900 + 1.4445900 + + Albi, France + Toulouse, France + + Map data ©2012 Google + + enbkGwdbLJ?n@XJ[tDbBBRKp@]`Bl@b@fDHnB|@pHjJd@~@h@xNO`B?NXp@xCbGjElKfDlBb@nOL`IV|InAzo@RbK`AhD@p@XtA]nG`@`ZOxPJfL|@p^z@tSlCbPdCnLbA~HRlIIdGe@fTg@pR?fTv@rb@dA|[f@nWxAvg@nBtOhAxEjGzOnc@raApKtT~HzKbGhG|NnMfKhJ~GbIrIbNjH|LxNnVdHtM`GdO|D|MpDvQtBnP|@zMd@dTYdUcBxVoEvb@uF|j@aEva@e@|F_@nLYtWi@p`@ShZVdLl@|J|CjU~Gb_@dBjMr@xJzBnd@pGjrAbArOhBdNnDbP`DbKtC|GfDpGzFdJzTp]|KvPjEbFrEfDvIrDfb@xItRrExGxCbG~D`FvEzEzF~GrL`ElKxAbF~Qv_AdL|l@d[jaBdK`i@pGvVvIxUzIhQxHxLrYr`@~q@v_AbUj[lEhHxApCvFfNxSpm@rQhi@dEhR~Mrw@nExPhGfOnVdg@l`@dx@rE|LhDrNvB`OlCfWfEpQdGfO|CtFzChE`a@pd@tItI~NnQhJdKlDzC`JbGf^rTzCbCbGdG~JhNbp@xjA`GjOvD|N|ChSlAlQRfPYpOqExm@cD~b@_BrWMpMLtJj@rL~C~\`Ity@tAbNfEfVnP~i@`ChIdCpK~AvL\nIQbNw@nI}BxRo@fQDxIx@dQhCrRzGj_@jJbi@`D`RfE`SvHnX`JnVpHlPnJ~PnM|RdLhNnGxGjKjJxOdLrErCbT|MrErCzIzDxHpApI@vGaAbBg@dF{BzJ{GdFoBtA[vE]hDJvGx@nC\vJl@xl@ErNVpFhA|EvBnG~EvK|K`DbC|HrE|G`CrKjB|UtApInAlIrB~NzFtF|CzHnFtKxJjj@xk@hDvEzEdJdC~GzCjMfB~O\`KLxS@jBBdFNlKl@|LtA|LvDrQjK`YjDrIJTxDbLpA`Fz@jDdCfPfDxNjC~IbCnKdCnLrFdWrDfPlE|MfQlb@rChJnAfH^vEM`Je@vJNbCn@vBjBvAxBGfBoBrAqCr@s@bA_@h@SbIu@fOs@dAC`EDzGa@ZGt@tAf@`ADb@Jd@VTpAhBfEpEbBpBvEbDpDzE~DzF@j@LZPMvAnC~ArEt@|A`BbBr@`@|@]R@hGhK`CtDdBfBxAn@vDb@ZZ\Fz@p@pAxB\vAHlHd@fBpKvQrB~DG~Bb@pBnD~F^Vx@Ap@GTNd@z@lSl]`AfCdCtDx@fBAv@j@hATN?hBC~DG`DZBVC + + + + 43.6046900 + 1.4445700 + + + 43.9269100 + 2.1462100 + + + + diff --git a/gpsbabel/testo.d/googledir.test b/gpsbabel/testo.d/googledir.test new file mode 100644 index 000000000..a506adde5 --- /dev/null +++ b/gpsbabel/testo.d/googledir.test @@ -0,0 +1,6 @@ +# +# Quick tests for Google Direction XML format +# Note: Reference files are from GPSBabel's own output. +# +gpsbabel -i googledir -f ${REFERENCE}/google-direction.xml -o gpx -F ${TMPDIR}/google-direction.gpx +compare ${REFERENCE}/google-direction.gpx ${TMPDIR}/google-direction.gpx diff --git a/gpsbabel/vecs.cc b/gpsbabel/vecs.cc index efbe9dbd5..d7e4d4d3f 100644 --- a/gpsbabel/vecs.cc +++ b/gpsbabel/vecs.cc @@ -57,6 +57,7 @@ extern ff_vecs_t geoniche_vecs; extern ff_vecs_t geo_vecs; extern ff_vecs_t glogbook_vecs; extern ff_vecs_t google_vecs; +extern ff_vecs_t google_dir_vecs; extern ff_vecs_t gpilots_vecs; extern ff_vecs_t gpl_vecs; extern ff_vecs_t gpssim_vecs; @@ -567,6 +568,12 @@ vecs_t vec_list[] = { "Google Maps XML", "xml" }, + { + &google_dir_vecs, + "googledir", + "Google Directions XML", + "xml" + }, { &maggeo_vecs, "maggeo", diff --git a/gpsbabel/xmldoc/formats/googledir.xml b/gpsbabel/xmldoc/formats/googledir.xml new file mode 100644 index 000000000..c3952a916 --- /dev/null +++ b/gpsbabel/xmldoc/formats/googledir.xml @@ -0,0 +1,20 @@ + + + + This format is designed to read the XML emitted when you +use the + Google Directions API. + + +If you use a Unix-compatible +operating system, this shell script might be useful: + + + -- 2.30.2